#include "fxcc/core/graph/common/Params.h"

void fxcc::graph::common::Params::AddFloat(const std::string& key, char* data, int dataLen)
{
    if (dataLen == 4)
    {
        memcpy(&m_Floats[key], data, dataLen);
    }
    if (dataLen == 8)
    {
        memcpy(&m_Vec2s[key], data, dataLen);
    }
    if (dataLen == 12)
    {
        memcpy(&m_Vec3s[key], data, dataLen);
    }
    if (dataLen == 16)
    {
        memcpy(&m_Vec4s[key], data, dataLen);
    }
}
void fxcc::graph::common::Params::InitFloat(const std::string& key, int vectorSize)
{
    switch (vectorSize)
    {
    case 1:
        m_Floats[key];
        break;
    case 2:
        m_Vec2s[key];
        break;
    case 3:
        m_Vec3s[key];
        break;
    case 4:
        m_Vec4s[key];
        break;
    default:
        break;
    }
}
;

void fxcc::graph::common::Params::AddDouble(const std::string& key, char* data, int dataLen)
{
    ztclog::info("add double data %d", dataLen);
}
void fxcc::graph::common::Params::InitInt(const std::string& key, int vectorSize)
{
    switch (vectorSize)
    {
    case 1:
        m_Ints[key];
        break;
    case 2:
        m_IVec2s[key];
        break;
    case 3:
        m_IVec3s[key];
        break;
    case 4:
        m_IVec4s[key];
        break;
    default:
        break;
    }
}
;


void fxcc::graph::common::Params::AddInt(const std::string& key, char* data, int dataLen)
{
    if (dataLen == 4)
    {
        memcpy(&m_Ints[key], data, dataLen);
    }
    if (dataLen == 8)
    {
        memcpy(&m_IVec2s[key], data, dataLen);
    }
    if (dataLen == 12)
    {
        memcpy(&m_IVec3s[key], data, dataLen);
    }
    if (dataLen == 16)
    {
        memcpy(&m_IVec4s[key], data, dataLen);
    }

}

void fxcc::graph::common::Params::SetFloat(const std::string& key, const float& v)
{
    m_Floats[key] = v;
}

void fxcc::graph::common::Params::SetVec2(const std::string& key, const glm::vec2& v)
{
    m_Vec2s[key] = v;
}

void fxcc::graph::common::Params::SetVec3(const std::string& key, const glm::vec3& v)
{
    m_Vec3s[key] = v;
}

void fxcc::graph::common::Params::SetVec4(const std::string& key, const glm::vec4& v)
{
    m_Vec4s[key] = v;
}

void fxcc::graph::common::Params::SetInt(const std::string& key, const int& v)
{
    m_Ints[key] = v;
}

void fxcc::graph::common::Params::SetIVec2(const std::string& key, const glm::ivec2& v)
{
    m_IVec2s[key] = v;
}

void fxcc::graph::common::Params::SetIVec3(const std::string& key, const glm::ivec3& v)
{
    m_IVec3s[key] = v;
}

void fxcc::graph::common::Params::SetIVec4(const std::string& key, const glm::ivec4& v)
{
    m_IVec4s[key] = v;
}